package cn.chinaflame.pagodas.web.webservice;


import cn.chinaflame.pagodas.utils.BundleUtil;
import cn.chinaflame.pagodas.utils.IPUtil;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
import javax.xml.rpc.ServiceException;
import java.rmi.RemoteException;

public class LightniWebService {
    private static String result = "no result!";
    private static String endpoint = BundleUtil.wsendPoint();// "http://192.168.1.35/netws/WebService.asmx?op=";//
    IPUtil iputil = new IPUtil();
  /*  static {
			endpoint = "http://"+IPUtil.getLocalHostLANAddress()+"/netws/netws/WebService.asmx?op=";
    }*/

    /**
     * 寻灯
     *
     * @param lightno
     * @return
     */
    public static String invokeLightSearch(String lightno, String ip) {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
            //System.out.println("##@#@"+endpoint+"LightSearch");
            call.setTargetEndpointAddress(endpoint + "LightSearch");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "LightSearch"));
            call.setSOAPActionURI("http://lightapi.org/LightSearch");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "lightno"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(new Object[]{lightno, ip});// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 安灯
     *
     * @param lightno
     * @param obj
     * @return
     */
    public static String invokeLightSend(String lightno, String obj, String ip) {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint + "LightSend");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "LightSend"));
            call.setSOAPActionURI("http://lightapi.org/LightSend");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "lightno"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "obj"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(new Object[]{lightno, obj, ip});// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 清灯
     *
     * @param lightno
     * @return
     */
    public static String invokeLightClear(String lightno, String ip) {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint + "LightClear");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "LightClear"));
            call.setSOAPActionURI("http://lightapi.org/LightClear");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "lightno"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(new Object[]{lightno, ip});// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 检查灯位
     *
     * @param lightno
     * @return
     */
    public static String invokeLightCheck(String lightno, String ip) {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint + "LightCheck");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "LightCheck"));
            call.setSOAPActionURI("http://lightapi.org/LightCheck");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "lightno"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(new Object[]{lightno, ip});// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * 发送配置
     *
     * @param seateinfo
     * @return
     */
    public static String invokeLightConfigure(String seateinfo, String ip) {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint + "LightConfigure");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "LightConfigure"));
            call.setSOAPActionURI("http://lightapi.org/LightConfigure");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "seateinfo"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(new Object[]{seateinfo, ip});// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

    /**
     * @param ip
     * @return
     */
    public static String invokelighton(String ip) {
        Service service = new Service();
        Call call;
        Object[] object = new Object[1];
        object[0] = ip;
        try {
            call = (Call) service.createCall();
            call.setTargetEndpointAddress(endpoint + "lighton");// 远程调用路径
//            call.setOperationName("SendSMS");// 调用的方法名  
            call.setOperationName(new QName("http://lightapi.org/", "lighton"));
            call.setSOAPActionURI("http://lightapi.org/lighton");
            // 设置参数名:
            call.addParameter(new QName("http://lightapi.org/", "ip"), // 参数名
                    XMLType.XSD_STRING,// 参数类型:String
                    ParameterMode.IN);// 参数模式：'IN' or 'OUT'
            // 设置返回值类型：
            call.setReturnType(XMLType.XSD_STRING);// 返回值类型：String
            result = (String) call.invoke(object);// 远程调用
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
        return result;
    }

//	public static void main(String[] args) {
//		//LightniWebService.invokelighton("127.0.0.1");
//        String result = LightniWebService.invokeLightSearch("0101020101","61.135.169.25");  //fe80::292b:c1ff:851c:6bdc%14
//       // String result = LightniWebService.invokeLightCheck("0101020101","127.0.0.1");  
//     //   String result = LightniWebService.invokeLightClear("0101020101","127.0.0.1");  
//        //String result = LightniWebService.invokeLightSend("枯第三方是否", "df椟槥地");  
//       // String result = LightniWebService.invokeLightConfigure("吊死扶伤");  
//        System.out.println(result);  
////		System.runFinalization();
//	}
}
